#include<stdio.h>


void find(int arr[],int size)
{
  int i = 1;
  int flag = 0;
  int res = arr[0];
  //将所有的数异或
  for(;i<size;i++)
  {
    res = res^arr[i];
  }
  //两个不同数字异或一定有至少一个bit不相同，可以找到第一次出现bit不同（1）的位置
  for(i = 0;i<=32;i++)
  {
    if((res & 1) == 1)
      break;
    res = res>>1;
    flag++;
  }
  int a = 0;
  int b = 0;
  for(i = 0;i<size;i++)
  {
    if(((arr[i]>>flag)&1) == 1)
    {
      a = a^arr[i];

    }
    else 
      b = b ^arr[i];

  }
  printf("a = %d  b = %d\n",a,b);

}

int main()
{
  int arr[] = {2,4,5,2,6,4,5,7,9,9};
  int size = sizeof(arr)/sizeof(int);
  find(arr,size);
  return 0;
}
